package com.terrace.db.system.service;

import java.util.List;
import java.util.Map;

import com.terrace.core.mybatis.entity.Pagination;
import com.terrace.db.system.mapper.entity.Permission;

public interface PermissionService {
	
	/**
	 * 新增菜单或者权限
	 * @param permission
	 * @return
	 */
	public int savePermissionSelective(Permission permission);
	
	/**
	 * 批量删除指定角色的权限关联信息
	 * @param roleId
	 * @param permiIds
	 * @return
	 */
	public int batchDeleteRolePermissionByRoleId(String roleId, List<String> permiIds);
	
	/**
	 * 批量保存角色权限关联信息
	 * @param roleId
	 * @param permiIds
	 * @return
	 */
	public int batchSaveRolePermission(String roleId, List<String> permiIds);
	
	/**
	 * 根据id删除权限或者菜单
	 * @param id
	 * @return
	 */
	public int deleteByPermissionId(String id);
	
	/**
	 * 修改权限或者菜单
	 * @param permission
	 * @return
	 */
	public int updateByPermissionIdSelective(Permission permission);
	
	/**
	 * 根据id查询权限和菜单
	 * @param id
	 * @return
	 */
	public Permission selectByPermissionId(String id);
	
	/**
	 * 根据用户id获取所有的操作权限
	 * @param userId
	 * @return
	 */
	public List<Permission> selectPermissionsByUserId(String userId);
	
	/**
	 * 根据条件获取权限ID列表
	 * @param condition
	 * @return
	 */
	public List<String> selectPermiIdsByCondition(Map<String, Object> condition);
	
	/**
	 * 根据用户id获取用户导航菜单列表
	 * @param userId
	 * @return
	 */
	public List<Permission> selectVisitMenuByUserId(String userId);
	
	/**
	 * 根据查询条件查询权限列表--不进行分页查询
	 * @param permission
	 * @return
	 */
	public List<Permission> selectPermissionsBySelective(Permission permission);
	
	/**
	 * 根据查询条件分页查询权限列表
	 * @param permission
	 * @return
	 */
	public Pagination<Permission> selectPermissionsForPagination(Permission permission, Pagination<Permission> pagination);

}
